0 CpxTRS
↳1 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxWeightedTrs
↳3 TypeInferenceProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CpxTypedWeightedTrs
↳5 CompletionProof (UPPER BOUND(ID), 0 ms)
↳6 CpxTypedWeightedCompleteTrs
↳7 NarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳8 CpxTypedWeightedCompleteTrs
↳9 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 0 ms)
↳10 CpxRNTS
↳11 SimplificationProof (BOTH BOUNDS(ID, ID), 0 ms)
↳12 CpxRNTS
↳13 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 0 ms)
↳14 CpxRNTS
↳15 IntTrsBoundProof (UPPER BOUND(ID), 560 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 157 ms)
↳18 CpxRNTS
↳19 FinalProof (⇔, 0 ms)
↳20 BOUNDS(1, n^1)
rev(a) → a
rev(b) → b
rev(++(x, y)) → ++(rev(y), rev(x))
rev(++(x, x)) → rev(x)
rev(a) → a [1]
rev(b) → b [1]
rev(++(x, y)) → ++(rev(y), rev(x)) [1]
rev(++(x, x)) → rev(x) [1]
rev(a) → a [1]
rev(b) → b [1]
rev(++(x, y)) → ++(rev(y), rev(x)) [1]
rev(++(x, x)) → rev(x) [1]
rev :: a:b:++ → a:b:++ a :: a:b:++ b :: a:b:++ ++ :: a:b:++ → a:b:++ → a:b:++ |
(a) The obligation is a constructor system where every type has a constant constructor,
(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:
rev
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
a => 0
b => 1
rev(z) -{ 1 }→ rev(x) :|: z = 1 + x + x, x >= 0
rev(z) -{ 1 }→ 1 :|: z = 1
rev(z) -{ 1 }→ 0 :|: z = 0
rev(z) -{ 1 }→ 1 + rev(y) + rev(x) :|: z = 1 + x + y, x >= 0, y >= 0
rev(z) -{ 1 }→ rev(x) :|: z = 1 + x + x, x >= 0
rev(z) -{ 1 }→ 1 :|: z = 1
rev(z) -{ 1 }→ 0 :|: z = 0
rev(z) -{ 1 }→ 1 + rev(y) + rev(x) :|: z = 1 + x + y, x >= 0, y >= 0
{ rev } |
rev(z) -{ 1 }→ rev(x) :|: z = 1 + x + x, x >= 0
rev(z) -{ 1 }→ 1 :|: z = 1
rev(z) -{ 1 }→ 0 :|: z = 0
rev(z) -{ 1 }→ 1 + rev(y) + rev(x) :|: z = 1 + x + y, x >= 0, y >= 0
rev(z) -{ 1 }→ rev(x) :|: z = 1 + x + x, x >= 0
rev(z) -{ 1 }→ 1 :|: z = 1
rev(z) -{ 1 }→ 0 :|: z = 0
rev(z) -{ 1 }→ 1 + rev(y) + rev(x) :|: z = 1 + x + y, x >= 0, y >= 0
rev: runtime: ?, size: O(n1) [1 + z] |
rev(z) -{ 1 }→ rev(x) :|: z = 1 + x + x, x >= 0
rev(z) -{ 1 }→ 1 :|: z = 1
rev(z) -{ 1 }→ 0 :|: z = 0
rev(z) -{ 1 }→ 1 + rev(y) + rev(x) :|: z = 1 + x + y, x >= 0, y >= 0
rev: runtime: O(n1) [1 + 2·z], size: O(n1) [1 + z] |